#include "DoubleLinkList.h"
#include "DynamicArray.h"
#include "student.h"
#include <iostream>
#include <ctime>

int main()
{
    // srand(time(nullptr));
    // DoubleLinkList list1;
    // for (int i = 0; i < 10; i++)
    // {
    //     list1.InsertTail(i + 1);
    // }
    // list.InsertByIndex(0,99);
    // list.InsertByIndex(10,99);
    // list1.show();
    // DoubleLinkList list2;
    // list2 = list1;
    // list1.Merge(list2).show();

    // DoubleLinkList list;
    // for (int i = 0; i < 20; i++)
    // {
    //     list.InsertTail(rand() % 10 + 1);
    // }
    // list.InsertByIndex(3, 666);
    // list.InsertByIndex(2, 4);
    // list.InsertByIndex(3, 2);
    // list.InsertByIndex(4, 9);
    // list.show();
    // ElementType *v = list.FindByIndex(10);
    // if (v)
    // {
    //     std::cout << "找到了" << *v << std::endl;
    // }
    // else
    // {
    //     std::cout << "没有" << std::endl;
    // }
    // DARRAY::DynamicArray a = list.FindByElement(7);
    // a.SetPrintFunc(Print);
    // a.show();
    // list.UpdateByIndex(15,1000);
    // list.UpdateByElement(9994,1000);
    // list.BubbleSort();
    DoubleLinkList list,list2;
    list.SetFreeFunc(Student::Free);
    list.SetPrintFunc(Student::Print);
    list.SetComprFunc(Student::Compr);
    list.SetComprFunc(Student::AllCompr);

    Student *s1 = new Student(1, "zhangsan");
    Student *s2 = new Student(2, "lisi");
    Student *s3 = new Student(3, "wangwu");
    // Student *s4 = new Student(4, "wangwu1");

    list.InsertTail((ElementType)s1);
    list.InsertTail((ElementType)s2);
    list.InsertTail((ElementType)s3);
    // list.InsertTail((ElementType)s4);
    list2 = list;

    // list.FindByElement((ElementType)s1);
    // list.UpdateByIndex(1,(ElementType)s4);
    // list.RemoveByIndex(1);

    list.Sort();

    list.show();

    return 0;
}

